<?php if ( ! defined('WDK_PATH')) exit('No direct script access allowed');
require_once BASE_PATH.'app/controller.php';
class Msg extends Controller
{
	function __construct()
	{
		parent::__construct();
		$this->_init();
	}
	
	protected function _init() 
	{
		parent::_loginCheck();
	}
	
	public function index()
	{
		/*****************************************************************************************************************************
		 * BASIC VARS
		*****************************************************************************************************************************/
		$assign_data = array();
		/****************************************************************************************************************************/
		try 
		{
			$assign_data['json'] = $this->json(true);
		}
		catch(WException $e)
		{
			parent::_error($e);
		}
		/*****************************************************************************************************************************
		 * RESULT
		*****************************************************************************************************************************/	
		parent::_layout('popup');	
		parent::_view($assign_data);
		/****************************************************************************************************************************/
	}
	
	public function send()
	{
		/*****************************************************************************************************************************
		 * BASIC VARS
		*****************************************************************************************************************************/
		$assign_data = array();
		/****************************************************************************************************************************/
		try 
		{
			$assign_data['json'] = $this->send_json(true);
		}
		catch(WException $e)
		{
			parent::_error($e);
		}
		/*****************************************************************************************************************************
		 * RESULT
		*****************************************************************************************************************************/	
		parent::_layout('popup');	
		parent::_view($assign_data);
		/****************************************************************************************************************************/
	}
	
	public function json($return=false)
	{
		/*****************************************************************************************************************************
		 * POST PARAMS..
		*****************************************************************************************************************************/
		$page	= (int) get('page', 1);
		$sf		= (string)	post('sf', '');
		$sk		= (string)	post('sk', '');
		/*****************************************************************************************************************************
		 * BASIC VARS
		*****************************************************************************************************************************/
		$listsize		= 10;
		$pagesize		= 10;
		$lm = Wdk::get('MessageManager');
		$lists = array();
		$where = array("`message_to` = {$this->session['user_seq']}");
		$assign_data = array('listsize'=>$listsize,'pagesize'=>$pagesize);
		/****************************************************************************************************************************/
		try
		{
			if(strlen($sf) > 0 && strlen($sk) > 0)
			{
				$where[] = "`{$sf}` LIKE '{$sk}'";
			}
			$lm['listsize'] = $listsize;
			$lm['page'] = $page;
			$lm['where'] = $where;
			$lm->load();
			foreach($lm['lists'] as $idx=>$list)
			{
				$data = array(	'no'			=>	$lm['total'] - ($page-1)*$listsize - $idx,
								'seq'			=>	$list['message_seq'],
								'user_nick'		=>	$list['user_nick'],
								'to_user_nick'	=>	$list['to_user_nick'],
								'title'			=>	$list['message_title'],
								'read_flag'		=>	$list['message_read_flag'],
								'insert_time'	=>	$list['message_insert_time_str']
							);
				array_push($lists, $data);
			}
			$assign_data['total'] = $lm['total'];
			$assign_data['lists'] = $lists;
		}
		catch(NoRecordException $e)
		{
			$assign_data['total'] = 0;
			$assign_data['lists'] = array();
		}
		catch(WException $e)
		{
			$assign_data['error'] = true;
			$assign_data['msg'] = "Error";
		}
		/*****************************************************************************************************************************
		 * RESULT
		*****************************************************************************************************************************/
		return parent::_json($assign_data, $return);
		/****************************************************************************************************************************/
	}
	
	public function send_json($return=false)
	{
		/*****************************************************************************************************************************
		 * POST PARAMS..
		*****************************************************************************************************************************/
		$page	= (int) get('page', 1);
		$sf		= (string)	post('sf', '');
		$sk		= (string)	post('sk', '');
		/*****************************************************************************************************************************
		 * BASIC VARS
		*****************************************************************************************************************************/
		$listsize		= 10;
		$pagesize		= 10;
		$lm = Wdk::get('MessageManager');
		$lists = array();
		$where = array("`fk_user_seq` = {$this->session['user_seq']}");
		$assign_data = array('listsize'=>$listsize,'pagesize'=>$pagesize);
		/****************************************************************************************************************************/
		try
		{
			if(strlen($sf) > 0 && strlen($sk) > 0)
			{
				$where[] = "`{$sf}` LIKE '{$sk}'";
			}
			$lm['listsize'] = $listsize;
			$lm['page'] = $page;
			$lm['where'] = $where;
			$lm->load();
			foreach($lm['lists'] as $idx=>$list)
			{
				$data = array(	'no'			=>	$lm['total'] - ($page-1)*$listsize - $idx,
								'seq'			=>	$list['message_seq'],
								'user_nick'		=>	$list['user_nick'],
								'to_user_nick'	=>	$list['to_user_nick'],
								'title'			=>	$list['message_title'],
								'read_flag'		=>	$list['message_read_flag'],
								'insert_time'	=>	date('Y-m-d H:i:s', $list['message_insert_time'])
							);
				array_push($lists, $data);
			}
			$assign_data['total'] = $lm['total'];
			$assign_data['lists'] = $lists;
		}
		catch(NoRecordException $e)
		{
			$assign_data['total'] = 0;
			$assign_data['lists'] = array();
		}
		catch(WException $e)
		{
			$assign_data['error'] = true;
			$assign_data['msg'] = "Error";
		}
		/*****************************************************************************************************************************
		 * RESULT
		*****************************************************************************************************************************/
		return parent::_json($assign_data, $return);
		/****************************************************************************************************************************/
	}
	
	public function form()
	{
		$this->_form();
		/*****************************************************************************************************************************
		 * BASIC VARS
		*****************************************************************************************************************************/
		$assign_data = array();
		/****************************************************************************************************************************/
		try 
		{
			
		}
		catch(WException $e)
		{
			parent::_error($e);
		}
		/*****************************************************************************************************************************
		 * RESULT
		*****************************************************************************************************************************/	
		parent::_layout('popup');	
		parent::_view($assign_data);
		/****************************************************************************************************************************/
	}
	
	private function _form()
	{
		if(parent::_isPost() == false) return;
		/*****************************************************************************************************************************
		 * BASIC VARS
		*****************************************************************************************************************************/
		$assign_data = array();
		$user_login_id		= (string)	post('user_login_id');
		$message_title		= (string)	post('message_title');
		$message_content	= (string)	post('message_content');
		$msg				= Wdk::get('Message');
		/****************************************************************************************************************************/
		try 
		{
			$msg->send(	$this->session['user_seq'],
						$user_login_id,
						$message_title,
						$message_content
						);
		}
		catch(NoRecordException $e)
		{
			parent::_script(array("alert('존재하지 않는 사용자입니다.');", "history.back();"));
		}
		catch(MessageSendException $e)
		{
			parent::_script(array("alert('{$e->getMessage()}');", "history.back();"));
		}
		catch(WException $e)
		{
			parent::_error();
		}
		/*****************************************************************************************************************************
		 * RESULT
		*****************************************************************************************************************************/	
		parent::_redirect('/user/msg');
		/****************************************************************************************************************************/
	}
	
	public function view($message_seq=0)
	{
		/*****************************************************************************************************************************
		 * BASIC VARS
		*****************************************************************************************************************************/
		$assign_data = array();
		$msg		= Wdk::get('Message');
		/****************************************************************************************************************************/
		try 
		{
			$msg->load($message_seq);
			if($msg['message_to'] == $this->session['user_seq'])
			{
				if($msg['message_to_del_flag'] == 'T')	throw new NoRecordException();
				$msg->read();
			}
			else if($msg['message_to'] == $this->session['user_seq'])
			{
				if($msg['message_del_flag'] == 'T')	throw new NoRecordException();
			}
			else
			{
				parent::_script(array("alert('접근 권한이 없습니다.');", "history.back();"));
			}
			$assign_data['data'] = $msg;
		}
		catch(NoRecordException $e)
		{
			parent::_script(array("alert('존재하지 않는 쪽지입니다.');", "history.back();"));
		}
		catch(WException $e)
		{
			parent::_error($e);
		}
		/*****************************************************************************************************************************
		 * RESULT
		*****************************************************************************************************************************/	
		parent::_layout('popup');	
		parent::_view($assign_data);
		/****************************************************************************************************************************/
	}
}